package cc.rengu.redp.bizimpl.usercenter.service;

import cc.rengu.igas.bomp.facade.bean.TxnLimitCfgBean;
//import cc.rengu.oltp.service.model.TransLimitInfo;
import cc.rengu.redp.bizimpl.usercenter.bean.UserInfo;

/**
 * 用户服务组件
 * Created by wangcheng on 2021/5/28 15:14
 */
public interface UserService {
    /**
     * 设置用户会话业务缓存信息
     * @param field 字段名
     * @param fieldValue 字段值
     * @throws Exception 异常
     */
    void setUserSessionValue(String field, String fieldValue) throws Exception;

    /**
     * 获取用户会话缓存信息
     * @param field 字段名
     * @return 字段值
     * @throws Exception 异常
     */
    String getUserSessionValue(String field) throws Exception;

    /**
     * 获取用户签约主体
     * @return 用户签约主体
     * @throws Exception 异常
     */
    String getUserSignInst() throws Exception;

    /**
     * 获取用户信息
     * @param instId 多法人标识
     * @param userId 用户标识
     * @param sessionId 会话标识
     * @return 用户信息
     * @throws Exception 异常
     */
    UserInfo getUserInfo(String instId, String userId, String sessionId) throws Exception;

    /**
     * 获取用户信息
     * @param instId 多法人标识
     * @param userInst 用户所属主体
     * @param certType 证件类型
     * @param certNo 证件号码
     * @return 用户信息
     * @throws Exception 异常
     */
    UserInfo getUserInfo(String instId, String userInst, String certType, String certNo) throws Exception;

    /**
     * 登记用户信息
     * @param userInfo 用户信息
     * @return true-登记成功,false-登记失败
     * @throws Exception 异常
     */
    boolean registerUserInfo(UserInfo userInfo) throws Exception;

    /**
     * 更新用户信息
     * @param userInfo 用户信息
     * @return true-更新成功,false-更新失败
     * @throws Exception 异常
     */
    boolean updateUserUserInfo(UserInfo userInfo) throws Exception;

    /**
     * 获取用户支付验证方式
     * @param instId 多法人标识
     * @param userId 用户标识
     * @param transAmt 交易金额
     * @param limitType 限额类型
     * @return 支付认证方式：00-免密,01-密码验证,02-密码+短信验证,03-密码+软Ukey
     * @throws Exception 异常
     */
//    UserPayAuthTypeEnum getUserPayAuthType(String instId, String userId, String transAmt, String limitType) throws Exception;

    /**
     * 用户支付密码校验
     * @param instId 多法人标识
     * @param userId 用户标识
     * @param transAmt 交易金额
     * @param password 密码
     * @return true-成功，false-失败
     * @throws Exception 异常
     */
    boolean checkUserPayPassword(String instId, String userId, String transAmt, String password) throws Exception;

    /**
     * 用户限额检查
     * @param instId 多法人标识
     * @param userId 用户标识
     * @param txnNum 内部交易码
     * @param transAmt 交易金额
     * @param limitType 限额类型
     * @return true-校验成功，false-失败
     * @throws Exception 异常
     */
    boolean checkUserTransLimit(String instId, String userId, String txnNum, String transAmt, String limitType) throws Exception;

    /**
     * 更新用户限额
     * @param instId 多法人标识
     * @param userId 用户标识
     * @param txnNum 内部交易码
     * @param transAmt 交易金额
     * @throws Exception 异常
     */
    void updateUserTransLimit(String instId, String userId, String txnNum, String transAmt) throws Exception;

    /**
     * 获取用户限额配置信息
     * @param instId 多法人标识
     * @param userId 用户标识
     * @param userInst 用户所属主体
     * @param limitType 限额类型
     * @return 用户限额信息
     * @throws Exception 异常
     */
//    TransLimitInfo getUserLimitCfgInfo(String instId, String userId, String userInst, String limitType) throws Exception;

    /**
     * 登记用户限额信息
     * @param transLimitInfo 用户限额信息
     * @return true-成功,false-失败
     * @throws Exception 异常
     */
//    boolean registerUserLimitInfo(TransLimitInfo transLimitInfo) throws Exception;

    /**
     * 更新用户限额
     * @param transLimitInfo 用户限额信息
     * @return true-成功,false-失败
     * @throws Exception 异常
     */
//    boolean updateUserLimitInfo(TransLimitInfo transLimitInfo) throws Exception;
}
